package com.edu.shiro.session;

import java.util.concurrent.atomic.AtomicInteger;

import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionListener;
/**
 * @author zsc
 * 配置session监听器
 */
public class ShiroSessionListener implements SessionListener {
	
	/**
	 * 统计在线人数
	 * juc包下线程安全自增
	 */
	private final AtomicInteger sessionCount = new AtomicInteger(0);
	
	/**
	 * 会话创建时触发
	 */
	@Override
	public void onStart(Session session) {
		//会话创建，在线人数加1
		sessionCount.incrementAndGet();
	}
	
	/**
	 * 退出会话时触发
	 */
	@Override
	public void onStop(Session session) {
		//会话退出，人数减一
		sessionCount.decrementAndGet();
	}
	
	/**
	 * 会话过期时触发
	 */
	@Override
	public void onExpiration(Session session) {
		//会话过期，人数减一
		sessionCount.decrementAndGet();
	}
	
	/**
	 * 获取当前在线人数
	 */
	public AtomicInteger getSessionCount(){
		return sessionCount;
	}

}
